#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include "authentifacation.h"
#include "personnel.h"
#include "patient.h"
#include "menu.h"
#include "anomalie.h"
int main()
{int n,n1,n2,n4,choixprin,choixpat,choixper,choixanom,prin,cont=0,cont1,choixauth,verifier;
Personnel p;
Patient p1;
long int ide;
Personnel t[100];Patient t1[100];Anomalie A[100];Parcoure t2[100];
char o;int i=0;
do{
     
  printf("\n1:pour demarer le programme");
  printf("\t2:changer mot de passe");
  printf("\n\n\t\t\t3:quitter");
  printf("\nvotre choix");
  scanf("%d",&choixauth);//saisir le choix de la menu d'authentification
  switch(choixauth)
  {
  case 1:
     verifier=debuter_programme("fichierPasse");
     if(verifier==-1) //si l'authentification n'est pas verifier
     { cont1=1;//pour quitter menu authentification
      cont=1;//pour quitter le programme
     }
     else
    cont1=1;//pour quitter menu authentification et erntrer dans le programme
    system("clear");
    
   break;
  case 2:
     changer_motPasse("fichierPasse");
     printf("\n votre mot de passe est changee");
     scanf("%c",&o);//c'est pour mantenir l'afficharge avant la supprission
    system("clear");
     break;
    case 3:
     cont1=1;//pour quitter menu authentification
     cont=1;//pour quitter le programme
    system("clear");
   break;
   default:
    printf("\n votre choix est invalide");
    scanf("%c",&o);//c'est pour mantenir l'afficharge avant la supprission
    system("clear");
    break;
  }
  }
  while(cont1!=1);//condition de quitter menu authetification






remplir_liste_personnel("fichierPers",t,&n);//convertir le fichier personnel en un tableau
remplir_liste_patient("fichierPat",t1,&n1);//convertir le fichier patient en un tableau
remplir_mvt_camp("Event",t2,&n2);//reperer tous les mvts dans le camp d'isolation
detecter_alerte(t2,n2,A,&n4,t,t1,n,n1);//detecter les alertes apartir des mvts

  while(cont!=1)
{
 prin=0;//initialisation de retour au menu principal
afficher_menuPrincipale();
choixprin=choix_menu();//choix menu principale
 switch(choixprin)
 {
 case 1:
    do
    {
    afficher_menuPersonnel();
    choixper=choix_menu();//choix menu Personnel
      switch(choixper)
      {
        case 1://ajouter un personnel
          saisir_personnel(&p,t,n);
          enregistrer_personnel(t,&n,p);
          printf("\n le personnel est ajoute");
         scanf("%c",&o);
         system("clear");
           break;
        case 2://supprimer un personnel
           printf("\nVeuillez saisir l'identifiant a supprimer");
           scanf("%ld",&ide);
           supprimer_personnel(t,&n,ide);
           printf("\nle personnel est supprimee");
            scanf("%c",&o);
            system("clear");
          
           break;
        case 3://afficher la liste des personnel
           afficher_liste_personnel(t,n);
            scanf("%c",&o);
            system("clear"); 
           break;
        case 4: //afficher les parcours de tout le personnel
           afficher_parcoure_personnel("Event",n,t);
          break;
        case 5:
          prin=1;//pour retourner en menu principale
          scanf("%c",&o);
          system("clear");
          break;
        case 6:
        cont=1;//pour quitter le programme
         break;
        default:
          printf("\n votre choix est invalide");
           scanf("%c",&o);
           system("clear");
          break;
        }
      }
      while((cont!=1)&&(prin!=1));//soit retour a menu principale soit quitter le programme
      break;
case 2:
    do
    {
      afficher_menuPatient();
      choixpat=choix_menu();
      switch(choixpat)//choix menu patient
      {
      case 1://ajouter un patient
        saisir_patient(&p1);
        enrigistrer_patient(t1,&n1,p1);
        printf("\nle patient est ajoutee");
         scanf("%c",&o);
         system("clear");
     
        break;
       case 2://supprimer un patient
         printf("\n Veuillez saisir l identifiant a supprimer");
         scanf("%ld",&ide);
         supprimer_patient(t1,&n1,ide);
          scanf("%c",&o);
          system("clear");
       
         break;
       case 3://afficher la liste de tous le personnel
        afficher_liste_patient(t1,n1);
         scanf("%c",&o);
          system("clear");
         break;
      case 4:
      prin=1;//retour a menu principale
       scanf("%c",&o);
          system("clear");
      break;
      case 5:
      cont=1;//quitter programme
      break;
      default:
      printf("\nVotre choix est invalide");
       scanf("%c",&o);
       system("clear");
      break;
      }
      }
      while(cont!=1&&prin!=1);//retour au menu principal ou quitter
      break;
    case 3:
      do
      {
      afficher_menuAnomalie();
      choixanom=choix_menu();//choix menu anomalie
      switch(choixanom)
      {
       case 1:
          afficher_alerte(A,n4,"Event");//afficher les alertes
          break;
       case 2:
          printf("\n veuillez saisir l identifiant a gerer");
          scanf("%ld",&ide);
          gestion_anomalie(A,&n4,t,&n,t1,&n1,ide);//gestion des anomalies
          break;
       case 3:
       afficher_absences(t2,n2,t,n);//affichage des absences
       case 4:
         prin=1;//retour menu principale
          scanf("%c",&o);
          system("clear");
         break;
       case 5:
        cont=1;//quitter le programme
        break;
        default:
        printf("\nVotre choix est invalide");
        break;
        }
        }
        while(cont!=1&&prin!=1);//??
        break;
    case 4:
     cont=1;
      
     break;
     default:
      printf("\n votre choix est invalide");
      break;
      }
      }
        /*avant de quitter enregistrer les données aprés les modifications */
        enregistrer_liste_personnel(t,n,"fichierPers","nouveau fichierPers");//enregistrer les données du personnel
        enregistre_liste_patient(t1,n1,"fichierPat","nouveau fichierPat");//enregistrer les données des patient
      }





















